Multiple connection management system

ABSTRACT

An apparatus, program product and method for managing a number of physical connections to a peripheral device. A multipath driver provides a logical connection interface to a client. This interface allows the client to efficiently access the peripheral device over one or more of the physical connections. In so doing, the logical connection interface associates connections with a primary connection, deletes inactive connections from memory, as well as updates and uses a list of active connections to seamlessly route data to the peripheral device.

FIELD OF THE INVENTION

The present invention relates to computing systems, and moreparticularly, to computer software and hardware used to communicatebetween networked devices of computing systems.

BACKGROUND OF THE INVENTION

Effective computer operation requires the efficient reading and writingof data out to peripheral devices, such as storage disks. Fundamental tothis read and write capability is the hardware connection that providesthe physical pathway for communication with the peripheral device. Sucha connection commonly comprises a fiber optic cable that couples toports of both the computer and the peripheral device. As such, the cablecomprises the communication link over which the read and write data isexchanged.

For performance and reliability considerations, computer systems havebeen developed that use a number of cables to connect two devices. Forexample, a computer may write and read: data to and from a single diskstorage unit using five or more cables. In one respect, using multiplecables to connect the same computer devices bolsters reliability. In theevent that should one or more of the cables become disconnected orotherwise inoperable, another connection ideally remains available. Alarger number of cables also provides increased bandwidth, allowing formore efficient data exchanges.

Despite such processing and reliability advances, however, usingredundant connections presents new challenges to computer performance.For example, existing systems are only configured to route data to adesired peripheral device using a single connection. The existing upperlevel programming of systems relies on the one-to-one relationship of aperipheral device to its respective cable connection in order to routedata to the device. This is because the upper level programming sends awrite/read command without regard to the connection. When writing data,for example, the upper level programs are configured only to “see” orotherwise process the address specific to the target disk unit.

With the advent of redundant connections, a computer having a number ofconnections to the same disk unit must account for the existence of eachcable connection in order to successfully read and write data. Thestatus of each cable, for instance, whether a cable is reporting or not,deleted, added, etc., must be known. Otherwise, failure to separatelytrack each connection can cause data to be written or read to or from aninappropriate device. Such miscommunication will result in filecorruption.

Furthermore, existing systems have relatively limited memory resourcesavailable to potentially store address, routing and other informationpertaining to different communication paths. Accommodating multiplecable connections for each device must somehow not overburden availablememory. Moreover, the time critical nature of computer processingrequires that any routing scheme be sufficiently efficient to handleincreasing workloads without delay.

Therefore, a significant need exists for an improved manner of managingconnections between hardware devices and a computer system.

SUMMARY OF THE INVENTION

The invention addresses these and other problems associated with theprior art by providing an apparatus, program product and method ofmanaging a number of physical connections to a peripheral device. Anembodiment consistent with the invention includes a multipath driverthat provides a logical connection interface. This interface allows aclient to efficiently access the peripheral device over one or more ofthe physical connections. For instance, a client user or system may readand write data to the peripheral device without regard to which actualphysical connection is used to route the data. Instead, that physicalconnection is automatically and transparently determined by themultipath driver.

These and other advantages and features, which characterize theinvention, are set forth in the claims annexed hereto and forming afurther part hereof. However, for a better understanding of theinvention, and of the advantages and objectives attained through itsuse, reference should be made to the Drawings, and to the accompanyingdescriptive matter, in which there is described exemplary embodiments ofthe invention.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a computer system consistent with theinvention.

FIG. 2 is a block diagram of a computer in the system of FIG. 1.

FIG. 3 is a block diagram of the operating system of FIG. 2 after a newconnection is added.

FIG. 4 is a flowchart illustrating an exemplary routine for locating aprimary associated with a disk unit in the computer system of FIG. 1.

FIG. 5 shows a series of exemplary steps configured to associate a newdevice driver with a primary located in FIG. 4.

FIG. 6 is a flowchart illustrating an exemplary routine performed by themultipath driver of FIG. 3 for sequencing to another connection inresponse to a failed connection.

FIG. 7 is a flowchart illustrating an exemplary routine fordisassociating a connection from a disk unit in the computer system ofFIG. 1.

DETAILED DESCRIPTION

The present invention provides an apparatus, program product and methodof managing a number of physical connections to a peripheral device. Anembodiment consistent with the invention includes a multipath driverthat enables a client to efficiently access the peripheral device overone or more of the physical connections. The physical connection used toaccess the device is automatically and transparently determined by themultipath driver.

In one sense, a multipath driver comprises a logical interface layerbetween the client/upper level programming and logic associated witheach connection. That is, a multipath driver may comprise a new layerthat preserves the “one device” interface for current hardware andsoftware implementations, while at the same time providing an interfacethat maintains information specific to the individual connections to theperipheral device. This allows the upper level programming to accomplishfunctions such as read, write, reset, read-parameters, etc., whilefocusing only on the “one view” of the peripheral device provided by themultipath driver. The client and other upper level programming thusremain unburdened by the actual physical connections.

By correlating multiple connections to a single peripheral device andallowing the connection to be treated as one entity, the multipathdriver reduces the occurrence of data corruption. For instance, themultipath driver helps prevent the overlooking of a connection, or theimproper association of a connection with a peripheral device. Also,additional connections may be added “on the fly” without requiring anyshutdown/quiesce, etc.

To this end, the multipath driver may include a list that includespointers to only those object fields associated with available orotherwise desirable connections. By keeping a separate list of just theactive connections, storage space is saved. Moreover, the more conciselist reduces processing time and power needed to locate an appropriateconnection. The multipath device additionally handles connectionfailures by removing the failed connection from the list, and bydetermining an alternative connection to the peripheral device.

Of note, the transition to this alternative connection is accomplishedseamlessly, or without any discernable delay to the client. Thus,computing operations remain uninterrupted in spite of the failedconnection. These features of the active list and multipath driver thusavoid having to check the status of each device driver when determininga new route. These features also ensure an optimum number of retries andthat all possible paths are tried. Deletion of failed connections fromthe list also frees up memory for other applications.

Furthermore, the multipath driver continuously updates connectioninformation to mitigate occurrences of data corruption and processingdelay. For example, as connections are added and deleted per systemspecifications, a corresponding logical connection is automaticallyestablished. Moreover, processes of the present invention minimize theuse of memory by deleting data pertaining to undesired connections.

Turning to the Drawings, wherein like numbers denote like partsthroughout the several views, FIG. 1 shows an exemplary computer system10 configured to manage a number of physical connections 22 linking acomputer 12 to a peripheral device 18. That is, the computer 12 of FIG.1 couples to the peripheral device 18 using more than one cable or otherconnection. The system 10 manages these connections to enable efficientcommunication of computer commands and data. Such management includesdata routing functions, as well as associating each of the connections22 with a primary connection and/or a peripheral device 18 for clientprocessing considerations.

To this end, the computer 12 of the system 10 is configured to support amultipath driver that provides a logical connection interface to clientsoftware. This interface allows the client to efficiently access theperipheral device 18 over one or more of the physical connections 22. Inso doing, the logical connection/multipath interface of the computer 12associates connections with a primary connection, while updating andusing a list of active connections to seamlessly route data to theperipheral device 18. In one embodiment, inactive connections aredeleted from memory.

As shown in FIG. 1, the system 10 includes a plurality of computers 12,14 and 16 networked to each other and to peripheral devices 18 and 20.The exemplary peripheral devices of FIG. 1 include storage serverlogical units configured to both store and route data to and fromnetworked computers 12, 14 and 16. Such storage server logical unitsinclude individually addressable disk units that each computer 12, 14and 16 may read and write data from and to, respectively. An example ofa server logical unit is an Enterprise Storage Server, such as isavailable from International Business Machines Corporation. Fiber opticcables 22 connect computers 12, 14 and 16 to the peripheral units 18 and20.

While FIG. 1 shows peripheral units 18 and 20 as server logical units,one skilled in the art should appreciate that an alternative, suitableperipheral device may comprise other networked hardware devices.Moreover, while connections 22 shown in FIG. 1 include fiber opticcables, suitable connections of other embodiments consistent with theinvention may include other communication devices, to include wirelesstransmission equipment.

Though not necessary for purposes of some embodiments consistent withthe present invention, the system 10 of FIG. 1 supports clustering.Clustering generally refers to a computer system organization wheremultiple computers are networked together to cooperatively performcomputer tasks. An important aspect of a computer cluster is that all ofthe computers in the cluster present a single image. Clustering is oftenused in relatively large, multi-user computer systems where highperformance and reliability are of particular concern.

For example, clustering is used to increase overall performance, sincemultiple computers can handle a larger number of tasks in parallel thana single computer otherwise could. Often, load balancing can be used toensure that tasks are distributed fairly among computers to preventindividual computers from becoming overloaded. Clustering may also beused to provide redundancy, or fault tolerance, so that should anycomputer or connection fail, the operations previously performed by thatcomputer or connection will be handled by other computers or connectionsin the cluster.

In the specific context of FIG. 1, multiple connections 22 supportcommunication between the clustered computer 12 and a peripheral unit 18of the clustered system 10. As such, a number of connections 22 maycomprise different communication paths to the computer 12 from the samedisk unit of a server logical unit. These redundant connections 22 canprovide improved system reliability and performance.

In one exemplary embodiment, computers 12, 14 and 16 are implemented asiSeries computers from International Business Machines Corporation, andoperating system 40 is implemented as an appropriate operating systemincorporating clustering capabilities, such as the OS/400 operatingsystem also available from IBM. The general use and configuration ofclustering services in the exemplary environment is well known to one ofordinary skills in the art.

It will be appreciated that the processes consistent with the presentinvention may be accomplished in systems other than those organized in aclustered configuration. It will further be appreciated thatnomenclature other than that specifically used herein to describe thehandling of computer tasks by a computer system may be used in otherenvironments. Therefore, the invention should not be limited to theparticular nomenclature used herein, e.g., as to protocols, requests,writing, reading, deleting, jobs, objects, etc.

FIG. 2 shows an exemplary hardware configuration of the computer 12 ofFIG. 1 configured to manage one or more physical connections to aperipheral device 18. Computer 12 generically represents, for example,any of a number of multi-user computers such as a network server, amidrange computer, a mainframe computer, etc. As such, the terms “node,”“system” and “computer” are sometimes used interchangeably throughoutthis specification. In any case, it should be appreciated that theinvention may be implemented in other computers and data processingsystems, e.g., in stand-alone or single-user computers such asworkstations, desktop computers, portable computers, and the like, or inother programmable electronic devices (e.g., incorporating embeddedcontrollers and the like).

Computer 12 generally includes one or more system processors 24 coupledto a main storage 26 through one or more levels of cache memory disposedwithin a cache system 28. Furthermore, main storage 26 is coupled to anumber of types of external devices via a system input/output (I/O) bus35 and a plurality of interface devices, e.g., a workstation controller34 and an I/O Processor 36, which respectively provide external accessto one or more external networks (e.g., a cluster networkinterconnection), one or more workstations 14, and/or one or morestorage devices, such as a storage server logical unit. Any number ofalternate computer architectures may be used.

To implement an apparatus, program product and method for managingconnections consistent with the invention, computer 12 is illustrated ashaving resident in main storage 26 an operating system 40 implementing aplurality of objects 31, 41, 42 and 50 for managing connections to aperipheral devices 18. Objects comprise both data structures andoperations, known collectively as methods. Methods access and manipulatedata structures. Objects having identical data structures and commonbehavior can be grouped together into classes. Object structures includedata and pointer fields. Pointers contain the addresses of other memorylocations. Data fields embody information or other objects. While shownin the illustrated embodiments as an object, the multipath driver,device driver, and all other software components consistent with theinvention are not limited to consisting of objects in other embodiments.

As shown in FIG. 2, some of the objects 31, 41 and 42 of the operatingsystem 40 may correspond to physical components of the computer 12and/or computer system 10. For instance, the IOP 31 may correspond toI/O processor 36, which along with an adapter (not shown), communicateswith the peripheral device 18. As such, the IOP 31 includes methods toaccess and manipulate the I/O processor 36. That is, the IOP 41initiates processes associated with accessing the peripheral device 18using the I/O processor 36. Similarly, the device driver 42 maycorrespond to, on a one-to-one basis, a physical connection incommunication with peripheral device 18. The device driver 42 thusfunctions as a logical structure through which the operating system 40manipulates information and processes associated with the respectivecable connection. As shown in FIG. 2, the computer 12 thus has only onephysical connection associated with the peripheral device 18.

The storage manager 50 includes and otherwise communicates with otherupper level programs responsible for managing disk assignments. That is,the storage management 50 is configured to assign, read and writecommands and other data to disk units and other peripheral devices 18.

In the single connection scenario of FIG. 2, the storage manager 50sends and receives information to and from a device driver 42. Thedevice driver 42 functions, in part, as an interface between the IOP 31and the storage manager 50. For instance, the device driver 42 may readfrom the peripheral device 18 prior to its communication to the storagemanager 50. Such data includes one or more identifiers associated withrespective peripheral units, e.g., disk units. The storage manager 50may use this identifier information when determining read/writeassignments, for example.

As is known in the art, the device driver 42 may additionally interfacewith a Logical Hardware Resource Information (LHRI) 41. The LHRI 41addresses and processes user and system input to ensure, in one respect,consistent naming conventions between computers and systems. The LHRI 41may additionally correspond to a physical HRI interface for receivinguser input. As discussed below in greater detail, such input may includespecifying removal of a connection from association with a peripheraldevice 18.

One or more jobs or applications 46 are also illustrated in computer 12,each having access to the objects 31, 41, 42 and 50 and other featuresimplemented within the operating system 40. It will be appreciated,however, that the functionality or features described herein may beimplemented in other layers of software in computer 12, and that thefunctionality may be allocated among other programs, methods, computersor components in clustered computer system 10. Therefore, the inventionis not limited to the specific software implementation described herein.

The connection between the I/O processor 36 and the peripheral unit 18of FIG. 2 may comprise one or more connections, such as the fiber opticcable shown in FIG. 1. The exemplary objects 31, 41 and 42 may each beparticular to a single connection. As shown in FIG. 3, new such objectsmay be created for each additional connection added or otherwiseassociated with the same disk unit.

More particularly, FIG. 3 shows the operating system 40 of the computer12 of FIG. 2 with a plurality of connections to a single disk unit 60.In one sense, FIG. 3 illustrates the operating system 40 of FIG. 2 aftertwo additional connections between the computer 12 and disk unit 60 areadded. New connections 66 and 68 may be created when new cables areinstalled between the computer 12 and the same disk unit 60. As such,the disk unit 60 of FIG. 3 connects to the computer 12 with threeconnections that are logically represented by branching lines 64, 66 and68.

As shown in FIG. 3, the addition of each connection may prompt thecreation of a new device driver, IOP and LHRI within the operatingsystem 40 for each connection. As such, each device driver 42, 71 and 72of operating system 40 may associate with a respective, physicalconnection 64, 66 and 68. Each device driver thus functions as a logicalstructure through which the operating system 40 manipulates informationand processes associated with the respective cable connection. Forreasons discussed in detail below, the device driver 42 associated withthe first connection 64 to the disk unit 60 may include a primary flag67 or other designator. Such a primary designator in the device driver42 may assist with associating subsequently installed connections withthe primary device driver 42 and the disk unit 60.

Each connection 64, 66 and 68 has a respective IOP 41, 69 and 70.However, one skilled will appreciate that suitable IOP's may beassociated with more than one connection. These IOP's 41, 69 and 70communicate information particular to the disk unit 60 and theconnections 64, 66 and 68. The IOP's 41, 69 and 70 may pass suchinformation to a respective device driver 42, 71 72. Thus, eachconnection 64, 66 and 68 associates with its own device driver 42, 71and 72, respectively. In this manner, the operating system 40 of FIG. 3maintains an individual device driver 42, 71 and 72 for each connection64, 66 and 68. This enables individual tracking of connection status andother characteristics, such as a connection's operability and connectioninformation.

Each device driver 42, 71 and 72 further includes identifyinginformation particular to the disk unit 60. LHRI's 73, 74 and 75 areadditionally created for each connection 64, 66 and 68, respectively.The LHRI's 73, 74 and 75 maintain consistent naming between theconnections 64, 66 and 68 and the disk unit 60, as well as provide aninterface mechanism for a user to address a particular connection. Asdiscussed below in detail, for instance, an LHRI may be used to deleteconnection data from a disk unit.

The information pertaining to the respective connection and the diskunit for each device driver 42, 71 and 72 may ultimately be communicatedto a multipath driver 76. The multipath driver 76 may be created inresponse to the operating system 40 determining that more than oneconnections form a communication path between the host computer 12 andthe disk unit 60. For instance, the primary device driver 42 may createthe multipath driver 76 in response to a prompt from a new device driver71. The new device driver 71 is associated with a new connection 66 tothe same disk unit 60.

In one sense, the multipath driver 76 comprises a logical interfacelayer between the upper level programming/storage manager 50 and logicassociated with each connection. That is, the multipath driver 76comprises a new layer between the device drivers 42, 69 and 70 thatpreserves the “one device” interface for current hardware and softwareimplementations, while at the same time providing an interface thatmaintains information specific to the individual connections 64, 66 and68 to the disk unit 60. The multipath driver 76 thus presents one “view”of a peripheral device/disk unit 60, no matter how many connectionsthere are to the disk unit 60. This allows the upper level programmingand storage manager 50 to accomplish functions such as read, write,reset, read-parameters, etc., while focusing only on the disk unit 60that the multipath driver 76 provides.

Because multiple connections are correlated to a single disk unit 60,they may be treated by the storage manager 50 as one entity. Thisensures that connections to a disk unit are not excluded and that twoconnections for two different disk units are not mistakenly associatedtogether. This mitigates the occurrence of data corruption.

To this end, the multipath driver 76 may compile a complete connectionlist 77. The complete connection list may comprise information relatingto each device driver 42, 71 and 72. For instance, the multipath driver76 may compile the complete list 77 having pointers to thetype/level/serial number field of each device driver associated with agiven connection. Such information may be recorded in the complete list77 whenever a connection becomes operable or a new disk unit is added,for instance. The complete connection list 77 is made available to theupper level programming/storage manager 50.

The multipath driver 76 may also include an active connection list 78.The active list 78 may include pointers to the object fields of thosedevice drivers that are available or otherwise desirable. For example,an exemplary active list may include pointers to device drivers 42 and72, but not to device driver 71, whose associated cable connection 66has been disconnected for maintenance, for example.

Moreover, the more concise list reduces processing time and power neededto locate an appropriate connection. The multipath device 76additionally handles connection failures by removing the failedconnection 71 from the active list provided to the storage manager 50.The multipath device 76 additionally finds an alternative connection 64and/or 68 to the disk unit 60 in response to the failed connection 66.

At the same time, the multipath driver 76 can pass pertinentinformation, such that contained in the complete list 77, up to thestorage manager 50. The storage manager 50 may send down read/writecommands to the multipath driver 76. The multipath driver 76 in turnacts as an interface to coordinate and manage where the write/readcommands should be routed in order to reach their target. That is, themultipath driver 76 may use the active connection list 78 to determinewhich connection(s) 64, 66 and/or 68 should be used. As discussedherein, the determination made by the multipath driver 76 may includeload balancing and other considerations, besides whether a givenconnection is active.

For exemplary purposes, FIG. 3 includes only one multipath driver 76,and accordingly, device drivers 42, 71 and 72 are associated with onlyone disk unit 60. One skilled in the art, however, will appreciate thatthe operating system 40 may include a number of additional multipathdrivers as needed to manage connections of additional disk units.

All communications for this particular disk unit 60 flow through onemultipath driver 76 of FIG. 2. When there are multiple connections, eachconnection is associated with a device driver, a resource name and thesame disk unit 60. The multipath driver 76 manages all of the objects.The storage manager 50 and other upper level programming remainsunburdened by how many actual connections there are. Also, additionalconnections may be added “on the fly” without requiring anyshutdown/quiesce, etc.

Each disk unit 60, 62 of the peripheral device 18 includes a uniqueidentifier string, such as an identifier string set by the storageserver logical unit's manufacturer. The string can be read and isusually not changed by the system 10. The peripheral device 18 alsoincludes a page having connection information. The connectioninformation is used by the operating system 40 to keep track of diskunits so that the same resource names are assigned to each disk unit andconnection for each Initial Program Load (IPL). The disk unit 60 recordsthe connection information pertaining to the connection 22 onto the pageof the disk unit when the connection is initially coupled to the diskunit 60. As discussed in detail below, such information may be updatedwhen a user removes a connection using the LHRI.

A global device 79 of the operating system 40 of FIG. 3 may maintain aglobal list 80 of registration information. The registration informationof the global list 80 may pertain to all connections registering on thecomputer 12. This registration information may differ from that includedwithin the current connection list 77 of the multipath driver 76.Namely, the pointer information of the current list 77 pertains to justthose connections associated with a single disk unit 60. The global list80 may alternatively include pointers to all connections that have beenregistered in association with the computer 12.

Registration information accessible to or otherwise included within theglobal list 80 includes type/level/serial number information that iscommunicated when a connection is activated or during an IPL, forinstance. As discussed below, this global list 80 provides a mechanismto associate connections to the same disk unit with a primary disk unitfor management considerations. The global list 80 may also be used todetermine alternative routes that are useful when removing a connection.

The discussion hereinafter will focus on the specific routines utilizedto manage connections in a manner consistent with the present invention.The routines executed to implement the embodiments of the invention,whether implemented as part of an operating system or a specificapplication, component, program, object, module or sequence ofinstructions, will also be referred to herein as “computer programs,”“program code,” or simply “programs.” The computer programs typicallycomprise one or more instructions that are resident at various times invarious memory and storage devices in a computer, and that, when readand executed by one or more processors in a computer, cause thatcomputer to perform the steps necessary to execute steps or elementsembodying the various aspects of the invention.

Moreover, while the invention has and hereinafter will be described inthe context of fully functioning computers and computer systems, thoseskilled in the art will appreciate that the various embodiments of theinvention are capable of being distributed as a program product in avariety of forms, and that the invention applies equally regardless ofthe particular type of signal bearing media used to actually carry outthe distribution. Examples of signal bearing media include but are notlimited to recordable type media such as volatile and nonvolatile memorydevices, floppy and other removable disks, hard disk drives, opticaldisks (e.g., CD-ROM's, DVD's, etc.), among others, and transmission typemedia such as digital and analog communication links.

It will be appreciated that various programs described hereinafter maybe identified based upon the application for which they are implementedin a specific embodiment of the invention. However, it should beappreciated that any particular program nomenclature that follows isused merely for convenience, and thus the invention should not belimited to use solely in any specific application identified and/orimplied by such nomenclature.

Moreover, those skilled in the art will recognize that the exemplaryenvironments illustrated in FIGS. 1–3 are not intended to limit thepresent invention. Indeed, those skilled in the art will recognize thatother alternative hardware and/or software environments may be usedwithout departing from the scope of the invention.

FIG. 4 shows a sequence of steps that are executable by the hardware andsoftware environments of FIGS. 1–3. More particularly, the exemplarysteps of the flowchart 90 of FIG. 4 are configured to determine, inpart, a candidate for a primary connection. That is, the processes ofthe flowchart 90 are generally directed to locating a primary connectionto a disk unit. All other connections to the same disk unit may then beassociated with this primary connection for the purposes of organizingand managing appropriate connections according to their common diskunit.

At block 92 of FIG. 4, a connection event occurs. A typical connectionevent may include a computer 12 powering up with connected disk units, acable being plugged into a port or switch, and/or a new disk unit beingconfigured. Type/level/serial number information pertinent to theconnection undergoing the event at block 92 is reported at block 94 ofFIG. 4. Such type/level/serial number information is commonly includedwithin hardware devices by manufacturers for identification purposes. Assuch, the IOP 69 may retrieve the type/level/serial number informationfrom the disk unit 60 via the physical connection 66.

The IOP 69 may then initiate generation of a device driver 71 at block96. The device driver 71 is thus generated in association with the IOP69. That IOP 69 is in turn associated with the connection 66 and diskunit 60. The newly created device driver 71 may thus include access tothe type/level/serial number retrieved at block 94.

A pointer containing the address of the newly generated object is thenadded to the global list 80 at block 98. Where so configured, the globallist 80 may include pointers to previously generated objects. Theseobjects may or may not be associated with the same disk unit 60.

At block 100, the device driver 71 causes a unique ID to be read off ofa page of the disk unit 60 by the IOP 69. This unique ID may be storedat block 102 of the flowchart 90. Unlike the type/level/serial numberinformation retrieved by the IOP 69 at block 94, the unique ID at block100 is particular to a single disk unit 60. That is, no two disk unitsshare the same unique ID. As such, these two types of identifyinginformation thus provide different levels of granularity as to thespecificity of identifying a given disk unit.

As will be clear after a full reading of the specification, anembodiment consistent with the invention capitalizes on these differinglevels of granularity to first locate a device driver in the global list80 that has the same type/level/serial number as that read at block 94.As described in detail below in connection with FIG. 5, locating thisfirst object assists in searching for a primary connection withoutunduly slowing other processes. To this end, the new device driver 71searches the global list 80 at block 104 for type/level/serial numberdata that matches the data retrieved at block 94. As thetype/level/serial number data is readily available, this portion oflocating a primary connection is accomplished quickly with relativelyfew processing and memory requirements.

The first identified device driver 42 having the type/level/serialnumber is locked at block 112 of FIG. 4. Of note, there has to be atleast one such object having the matching type/level/serial number byvirtue of the searching device driver 71, itself, which was added to theglobal list 80 at block 98. The lock of block 112 allows the locateddevice driver 42 to continue to search the global list 80 while allother objects having the same type/level/serial number are effectivelyheld, or kept inactive by the operating system 40. That is, the otherdevice driver objects in the global list 80 that have the sametype/level/serial number are not allowed to search until the lock islifted off of the first located device driver 42. This precautionprevents subsequently registered objects in the global list 80 fromsimultaneously searching for a primary connection. Such simultaneoussearching could erroneously result in determining more than one primaryconnection, which could lead to dissociation and data loss.

In one embodiment, the lock's hold only applies to those device driverson the global list 80 that have the sought after type/level/serialnumber. Because only those objects having the same type/level/serialnumber are held inactive, other methods on the list are able to searchconcurrently for other type/level/serial number objects associated withother disk units. This feature allows good efficiency by enablingparallel processing.

While other objects having the same type/level/serial number remaininactive, the first located device driver 42 sequentially reads theunique identifiers of the locked objects at block 116. The device driver42 having the lock then compares at block 117 the read unique identifierto the stored unique identifier recalled at block 114. That is, thelocked device driver 42 may evaluate other device drivers on the list tofind a matching unique ID. This unique ID is used to confirm that aparticular device driver is with certainty associated with the same diskunit 60.

The flowchart 118 of FIG. 5 shows a series of exemplary steps configuredto associate the new device driver 71 with the primary located in FIG.4. Turning more particularly to the processes of FIG. 5, the lockeddevice driver 42 compares its own unique ID to the recalled ID of thenewly created device driver 71 (which was stored at block 102 of FIG.4). Where no unique ID associated with any device driver in the globallist 80 matches the recalled ID at block 119 of FIG. 5, then a flag 67is set in the locked 42 at block 120. This flag 67 designates the locked42 as being a primary for a given disk unit 60. Consequently, allsubsequent connections added to the global list 80 may locate and beassociated with the primary.

As discussed above, the first device driver 42 located in FIG. 4 may bethe same device driver 71 that was generated at block 96 of FIG. 4. Sucha circumstance occurs where the device driver generated at block 96 isthe first to be added to the list. As discussed herein, such will be thecase where that newly created object is to be designated as a primarydevice driver for a given disk unit.

At block 122 of FIG. 5, the lock is released on the primary devicedriver 42. The primary 42 then may report itself for posting to thestorage manager 50 or other upper level program at block 123.

Where the unique identifier of the locked object 42 alternativelymatches the recalled unique identifier of the newly created devicedriver 71 at block 119 of FIG. 5, then the new object 71 may beassociated with the locked object, or primary device driver 42. Moreparticularly, the new device driver 71 prompts the primary 42 to see ifthere is already a multipath driver 76 associated with the primary 42(and disk unit 60). If not, the primary device driver 42 creates themultipath driver 76 at block 126 of FIG. 5. In any case, a pointer tothe new, subordinate device driver 71 is added to the multipath driver76 at block 128.

In this manner, the multipath driver 76 develops arrays comprising thecurrent and active connection lists 77 and 78, respectively. These listsin part correlate the new device driver 71 to the primary device driver42, both of which are associated with the disk unit 60. The multipathdriver 76 may update both the current connection list 77 and the activeconnection list 78 according to the status of the connections.

The flowchart 130 of FIG. 6 shows one such exemplary sequence of stepssuited to update the active connection list 78. More particularly, thesteps of the flowchart 130 update and use the active connection list 78to transparently transition to an alternative connection in the event aconnection 66 becomes inoperable. For instance, the device driver 71 maycommunicate notice of a connection failure to the multipath driver 76 atblock 132 of FIG. 6.

In response to the failure, the multipath driver 76 determines whichdevice driver 71 is associated with the failed connection 66 at block134. For instance, the multipath driver 76 may read a pointer includedthe notice to the failed device driver. The multipath driver 76 may thenremove the pointer to the connection from the active connection list 78at block 136. This removal from the active connection list 78 ensuresthat the multipath driver 76 does not attempt to route data over thefailed connection 66 again, or at least until the connection 66 isreestablished according to the connection processes of FIG. 4.

Where the active list 78 at block 138 indicates that the multipathdriver 76 has multiple, alternative connections to the disk unit 60 atits disposal, the multipath driver 76 may sequence down the list 78 toroute data over a working connection 68. Of note, the transition to thisnew connection 68 is accomplished seamlessly, or without any discernabledelay. Thus, computing operations remain uninterrupted in spite of thefailed connection 66.

To this end, the multipath driver 76 attempts routing data to thealternative connection 68 using a pointer to the appropriate devicedriver 72 associated with the connection 68. Where the communicationsucceeds at block 142, then operations seamlessly continue at block 144.Any subsequently discovered failed connection will be removed from theactive list 78 at block 136 of FIG. 6. As such, a failed connection isonly tried once, and the system 10 avoids unproductively cycling betweenfailed connections. That is, each connection in the active list 78 isonly tried once, and the maximum number of retries equals the number ofconnections in the list 78. Only where an alternative connection cannotbe determined at block 138 of FIG. 6 will operations be suspended atblock 146.

These features of the list 78 and multipath driver 76 thus avoid havingto check the status of each device driver when determining a new route.All objects included in the active list should be active as of the lastupdate. These features also ensure an optimum number of retries and thatall possible paths are tried.

Minimizing memory requirements is also a benefit realized by theprocesses of the flowchart 150 shown in FIG. 7. More particularly, theexemplary steps of the flowchart 150 update connection informationstored on a peripheral device/disk unit 60. In addition to reducingmemory usage, the removal of connection information from the disk unitas discussed below facilitates processing of current connectioninformation.

Disk units include a limited space for storing connection information.Connection information includes an identifier sequence particular to theconnection(s) that couple the disk unit to the computer. For instance, areadable and writeable page of data stored on the disk unit may includecharacter strings associated with each connection coupled to the diskunit. As more connections are added, this storage space may fill up.Consequently, a feature of the present invention provides a mechanismfor deleting erroneous or outdated connection information on each diskunit.

Turning particularly to block 152 of FIG. 7, a user may input a commandinto the computer 12 to delete a failed, or non-reporting connection. Inresponse, the operating system 40 of the computer 12 may automaticallyinitiate processes to remove connection information from the disk unit60. For instance, an LHRI 74 associated with the device driver 71 of thenon-reporting connection 66 may prompt at block 154 the global driver 79to locate a working connection that is coupled to the disk unit 60. Thatis, the LHRI 74 initiates processes to automatically find an alternativepath, other than the non-reporting connection, to the same disk unit 60that was formerly in active communication with the non-reportingconnection.

To this end, the global driver 79 at block 156 searches the global list80 for type/level/serial number information associated with the diskunit 60. Should a match of the information be found, the global driver79 prompts the device driver 72 associated with the applicable pointerin the list 80 to read connection data off of the disk unit 60 at block164. A successful read of such data at block 166 may automaticallyinitiate an evaluation of the connection data of the disk unit 60. Wherethe data cannot be read or the connection data does not match, thesearch for an alternative connection may continue at block 156.

Alternatively, where a working connection to the disk unit 60 has beenlocated and confirmed at block 168, then the device driver 72 may causethe connection data on the disk unit 60 to be removed using the IOP 70at block 170. This connection data is then rewritten by the devicedriver 72 such that it contains no reference to the non-reportingconnection. Once thus updated, the device driver 72 writes the updatedconnection information back to the disk unit 60 at block 174. Asuccessful update at block 174 ends the updating sequence at block 160.

In this manner, disk storage space may is preserved for accurateconnection information and other uses. Moreover, the updated connectioninformation may be used to verify connectivity upon IPL or installation,for instance. Under one such scenario, connection information from adisk unit may show a multipath driver that data pertaining to fourdifferent cables is resident within the disk unit storage. The multipathdriver may use the active connection list 78 to verify that fourconnections are currently useable. A discrepancy may cause a check to beperformed on objects associated with one or more of the connections toverify that they are still operating as reported.

While the present invention has been illustrated by a description ofvarious embodiments, and while these embodiments have been described inconsiderable detail, it is not the intention of the applicants torestrict, or in any way limit, the scope of the appended claims to suchdetail. For instance, any of the steps of the above exemplary flowchartsmay be deleted, augmented, made to be simultaneous with another or beotherwise altered in accordance with the principles of the presentinvention.

Furthermore, while computer systems consistent with the principles ofthe present invention may include virtually any number of networkedcomputers, and while communication between those computers in thecontext of the present invention may be facilitated by an entitlementapplication, one skilled in the art will nonetheless appreciate that theprocesses of the present invention may also apply to directcommunication between two computers as in the above example, or even tothe internal processes of a single computer. Additional advantages andmodifications will readily appear to those skilled in the art. Theinvention in its broader aspects is therefore not limited to thespecific details, representative apparatus and method, and illustrativeexample shown and described. Accordingly, departures may be made fromsuch details without departing from the spirit or scope of applicant'sgeneral inventive concept.

1. An apparatus comprising: a processor; and a multipath device driverconfigured to execute on the processor and to manage a plurality ofphysical connections to a peripheral device, the multipath device driverproviding a logical connection interface configured to provide clientaccess to the peripheral device over at least one of the plurality ofphysical connections.
 2. The apparatus of claim 1, wherein multipathdevice driver includes a device driver for each of the plurality ofphysical connections, and coupled to the multipath device driver.
 3. Theapparatus of claim 1, wherein the multipath device driver is configuredto manage a list including the plurality of physical connections.
 4. Theapparatus of claim 3, wherein the multipath device driver is furtherconfigured to manage a second list including information pertaining toactive connections of the plurality of physical connections.
 5. Theapparatus of claim 4, wherein the second list includes informationpertaining to a status of each of the plurality of connections.
 6. Theapparatus of claim 1, wherein the multipath device driver initiatesdetermining an alternative connection in response to a failedconnection.
 7. The apparatus of claim 6, wherein the multipath devicedriver determines the alternative connection by accessing a list ofalternative connections.
 8. The apparatus of claim 1, wherein themultipath device driver initiates deleting connection data from theperipheral device.
 9. The apparatus of claim 1, wherein the multipathdevice driver initiates deleting the connection data by communicatingwith the peripheral device over another of the plurality of connections.10. The apparatus of claim 1, wherein the multipath device driverinitiates writing connection data to the peripheral device.
 11. Theapparatus of claim 1, wherein the multipath device driver initiatesassociating a first device driver with a second device driver.
 12. Theapparatus of claim 1, wherein the multipath device driver initiatessearching a list for an identifier indicative of the peripheral deviceto determine a primary connection.
 13. The apparatus of claim 1, whereinthe multipath device driver initiates placing a lock on a device driverto prevent another device driver from searching a list.
 14. Theapparatus of claim 1, wherein the multipath device driver initiatesdesignating a connection as a primary connection.
 15. The apparatus ofclaim 1, wherein the multipath device driver is created by a primarydevice driver.
 16. The apparatus of claim 15, wherein the primary devicedriver creates the multipath device driver in response to detecting anew connection associated with the peripheral device.
 17. An apparatuscomprising: a processor; and a device driver executing on the processorand configured to manage a plurality of physical connections to aperipheral device, the device driver providing a logical connectioninterface configured to create a list including data associated with atleast one active connection of a plurality of connections connecting acomputer to the peripheral device, and to use the list to automaticallyroute communications from the computer to the peripheral device.
 18. Theapparatus of claim 17, wherein the device driver is configured to usethe list to route the communications to a second connection on the listin the event that a first connection fails.
 19. The apparatus of claim17, wherein the device driver is configured to remove the dataassociated with the at least one active connection from the list inresponse to the at least one active connection failing.
 20. Theapparatus of claim 17, wherein the device driver is configured to createa second list including information pertaining to all of the pluralityof connections.
 21. An apparatus comprising: a processor; and amultipath device driver executing on the processor and configured tomanage a plurality of physical connections to a peripheral device, themultipath device driver providing a logical connection interfaceconfigured to receive input associated with removing from memory of theperipheral device information pertaining to an undesired connection ofthe plurality of connections connecting a computer to the peripheraldevice, and to remove the information from the peripheral device. 22.The apparatus of claim 21, wherein the multipath device driver isfurther configured to determine an alternative connection incommunication with the peripheral device.
 23. The apparatus of claim 21,wherein the multipath device driver is further configured to remove theinformation from the peripheral device using the alternative connectionin communication with the peripheral device.
 24. A method for managing aplurality of physical connections from a computer to a peripheraldevice, the method comprising: creating a multipath device drivercomprising a logical connection to a peripheral device coupled to acomputer over a plurality of physical connections; and accessing theperipheral device using the multipath device driver.
 25. The method ofclaim 24, further comprising adding a new device driver associated withthe multipath device driver in response to detecting a new connectionbetween the peripheral device and the computer.
 26. The method of claim24, wherein accessing the peripheral device using the multipath devicedriver further includes accessing a memory.
 27. The method of claim 24,wherein accessing the peripheral device using the multipath devicedriver further includes determining an alternative connection to theperipheral device in response to detecting a failed connection.
 28. Theapparatus of claim 27, determining an alternative connection to theperipheral device in response to detecting a failed connection furtherincludes accessing a list of active connections.
 29. The method of claim24, wherein accessing the peripheral device over the multipath devicedriver further includes deleting connection data from the peripheraldevice.
 30. The method of claim 29, wherein deleting connection datafrom the peripheral device further includes communicating with theperipheral device over another of the plurality of connections.
 31. Themethod of claim 24, wherein accessing the peripheral device over themultipath device driver further includes writing connection data to theperipheral device.
 32. The method of claim 24, wherein creating themultipath device driver further includes associating a new device driverwith a primary device driver, wherein the primary device driver isassociated with the multipath device driver.
 33. The method of claim 24,wherein creating the multipath device driver further includes updating alist including active connections to the peripheral device.
 34. Themethod of claim 24, wherein creating the multipath device driver furtherincludes updating a list including status information pertaining to theplurality of connections.
 35. The method of claim 24, wherein creatingthe multipath device driver further includes searching a list for anidentifier associated with the peripheral device.
 36. The method ofclaim 24, wherein creating the multipath device driver further includesplacing a lock on an object to prevent the object from searching a list.37. The method of claim 24, wherein creating the multipath device driverfurther includes reading identification data from the peripheral deviceto confirm an identity of a connection.
 38. The method of claim 24,wherein creating the multipath device driver further includes creating amultipath driver in response to detecting a new connection associatedwith a different peripheral device.
 39. The method of claim 24, whereincreating the multipath device driver further includes creating themultipath device driver using a primary device driver.
 40. The apparatusof claim 37, wherein creating the multipath device driver furtherincludes creating the multipath device driver in response to detecting anew connection associated the peripheral device.
 41. The apparatus ofclaim 37, wherein creating the multipath device driver further includesusing a new device driver associated with a new connection to prompt aprimary device driver to create the multipath device driver, wherein themultipath device is associated with both the primary and new devicedrivers.
 42. A method for managing a plurality of physical connectionsfrom a computer to a peripheral device, the method comprising: creatinga list including data associated with at least one active connection ofa plurality of connections connecting a computer to a peripheral device;and using the list to automatically route communications from thecomputer to the peripheral device.
 43. The method of claim 42, whereinusing the list further includes using the list to route thecommunications to a second connection in the event that the at least oneactive connection fails.
 44. The method of claim 42, further comprisingremoving the data associated with the at least one active connection inresponse to the at least one active connection failing.
 45. The methodof claim 42, further comprising creating a list including informationpertaining to all of the plurality of connections.
 46. A method formanaging a plurality of physical connections from a computer to aperipheral device, the method comprising: receiving input associatedwith removing from memory of a peripheral device information pertainingto an undesired connection of a plurality of connections connecting acomputer to the peripheral device; and removing the information from theperipheral device.
 47. The method of claim 46, wherein removing theinformation further includes determining an alternative connection incommunication with the peripheral device.
 48. The method of claim 47,wherein removing the information further includes using the alternativeconnection in communication with the peripheral device to remove theinformation from the peripheral device.
 49. A program product,comprising: program code including a device driver configured to managea plurality of physical connections to a peripheral device, the devicedriver providing a logical connection interface configured to provideclient access to the peripheral device over at least one of theplurality of physical connections; and a physical, recordable mediumbearing the program code.